/*
 * StaticLogClass.h
 *
 *  Created on: Mar 6, 2013
 *      Author: loadar
 */

#ifndef STATICLOGCLASS_H_
#define STATICLOGCLASS_H_

#include "StaticLogFactory.h"
#include <iostream>
#include <map>

namespace staticmember
{

class StaticLogClass
{
private:
	static std::map<std::string, StaticLogClass*> *classMap;
public:
	static void addStaticLogClass(StaticLogClass* logClass);
	static StaticLogClass* getStaticLogClass(std::string name);

private:
	IStaticLog::pCreateStaticLog createFun;
	std::string className;
public:
	StaticLogClass(std::string name, IStaticLog::pCreateStaticLog fun);
	virtual ~StaticLogClass();

	IStaticLog* newStaticLogInstance();
};

} /* namespace staticmember */
#endif /* STATICLOGCLASS_H_ */
